<?php

include_once '../model/Constructora.php';
include_once '../model/Obra.php';
include_once '../daos/ConstrucDao.php';
include_once '../daos/ObraDao.php';
include_once '../commons/Constants.php';

class ObraController {

    public function __construct() {
        
    }

    public function listar() {

        session_start();

        $msj = "Error consultando las obras, por favor intente más tarde";
        $view = "../views/obras.php";

        try {

            $dao = new ConstrucDao();
            $construc = new Constructora();
            $id = 0;

            if (!isset($_POST["idConstruc"]) && isset($_SESSION['construc'])) {
                $construc = unserialize($_SESSION['construc']);
                $id = $construc->getId();
            } else {
                $id = $_POST["idConstruc"];
            }

            $construc = $dao->getConstrucById($id);

            $msj = "";
            $_SESSION['construc'] = null;
            if (isset($construc)) {
                $_SESSION['construc'] = serialize($construc);
            }

            $msj = "";
        } catch (Exception $e) {
            
        }

        $_SESSION['msj'] = $msj;
        return $view;
    }

    public function save() {

        session_start();

        $msj = "Error salvando la obra";
        $estatus = AJAX_ERROR;
        $id = 0;

        try {

            $construct = new Constructora();
            $construct = unserialize($_SESSION['construc']);

            $dao = new ObraDao();

            $obra = new Obra();
            $obra->setId($_POST['id']);
            $obra->setNombre(strtoupper($_POST['nombre']));
            $obra->setDireccion(strtoupper($_POST['direccion']));
            $obra->setFechaInicio(date('Y-m-d', strtotime($_POST['inicio'])));
            $obra->setFechaFin(date('Y-m-d', strtotime($_POST['fin'])));
            $obra->setConstructora($construct);

            $copy = $dao->getObraByName($obra->getNombre(), $construct->getId());
            if ($obra->getId() == 0) {
                if ($copy != null) {
                    $msj = "Ya existe una obra con el mismo nombre, por favor verifique";
                    $obra = null;
                } else {
                    $obra = $dao->saveObra($obra);
                }
            } else {
                if ($copy != null && $copy->getId() != $obra->getId()) {
                    $msj = "Ya existe una obra con el mismo nombre, por favor verifique";
                    $obra = null;
                } else {
                    $obra = $dao->updateObra($obra);
                }
            }

            if (isset($obra) && $obra->getId() > 0) {
                $msj = "Obra salvada satisfactoriamente";
                $estatus = AJAX_SUCCESSFUL;
                $id = $obra->getId();
            }
        } catch (Exception $e) {
            
        }

        $responce = array('msj' => $msj, 'estatus' => $estatus, 'id' => $id);

        return json_encode($responce);
    }

    public function query() {

        session_start();

        $responce = array('msj' => "Error consultando la obra", 'estatus' => AJAX_ERROR);

        try {
            $dao = new ObraDao();

            $obra = new Obra();
            $obra = $dao->getObraById($_POST['id']);

            if (isset($obra)) {
                $responce = array('msj' => "",
                    'estatus' => AJAX_SUCCESSFUL,
                    'id' => $obra->getId(),
                    'nombre' => $obra->getNombre(),
                    'direccion' => $obra->getDireccion(),
                    'inicio' => date('d/m/Y', strtotime($obra->getFechaInicio())),
                    'fin' => date('d/m/Y', strtotime($obra->getFechaFin())));
            }
        } catch (Exception $e) {
            
        }

        return json_encode($responce);
    }

    public function delete() {

        session_start();

        $msj = "Error eliminando la obra";
        $estatus = AJAX_ERROR;

        try {
            $dao = new ObraDao();

            $obra = new Obra();
            $obra = $dao->getObraById($_POST['id']);

            if (isset($obra)) {
                $result = $dao->deleteObra($obra);

                if ($result) {
                    $msj = "Obra eliminada satisfactoriamente";
                    $estatus = AJAX_SUCCESSFUL;
                }
            }
        } catch (Exception $e) {
            
        }

        $responce = array('msj' => $msj, 'estatus' => $estatus);

        return json_encode($responce);
    }

}

?>